AWS Batch のコンピューティング環境のサービスロールが変更できないときの対処方法

AWS Batch のコンピューティング環境のサービスロールが変更できないときの対処方法

Clock Icon2024.07.09

困っていた内容

AWS Batch のマネージドコンピューティング環境(EC2)に設定したサービスロールを変更したいです。
現状、コンピューティング環境には独自に作成した IAM ロールを設定しています。
これをサービスリンクロール(AWSServiceRoleForBatch)に変更したいのですが、変更できません。
なぜでしょうか。対処方法を教えてください。

どう対応すればいいの?

変更できないため、コンピューティング環境を再作成してください。

コンピューティング環境を更新します。 - AWS Batch

コンピュート環境がサービスにリンクされたロールを使用している場合、通常の IAM ロールを使用するように変更することはできません。コンピューティング環境がサービスにリンクされたロールを使用している場合、通常の IAM ロールを使用するように変更することはできません。

AWS Batch の仕様として、通常の IAM ロールからサービスリンクロール※への変更、もしくはその逆の変更はできません。

※例:arn:aws:iam::123456789012:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch

コンピューティング環境のサービスロールとして、サービスリンクロールを使用したい場合は、次のような手順でコンピューティング環境を再作成する必要があります。

  1. サービスリンクロールを指定した新しいコンピューティング環境を作成
  2. コンピューティング環境を既存のジョブキューに追加
  3. 古いコンピューティング環境をジョブキューから削除
  4. 古いコンピューティング環境を削除

なお、AWS CLI で変更を試みた場合はClientExceptionとなります。

$ aws batch update-compute-environment \
  --compute-environment hato-ec2-compute-environments-custom-role  \
  --service-role "arn:aws:iam::123456789012:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch"

An error occurred (ClientException) when calling the UpdateComputeEnvironment operation: A CE using a user-provided role cannot be updated to use Batch Service Linked Role.

参考資料

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.